The effectiveness of general purpose stand alone computers, such as the personal computer found in most office environments and the laptop computers increasingly used by professionals requiring portability, has been substantially improved by allowing communications between machines over a communications network. Such a network of computers allows the resources of one computer to be shared with other computers in the network. For example, storage areas that have files, printers, modems, and other resources may all be advantageously shared.
The data that is shared between computers is sent in packets across the physical network connection and read by destination computers. Such packetized network data may be requests for shared resources, data, such as a file, or other information that must be communicated from one computer to the other. As used herein, the term “network data” refers to data or information that is actually transmitted over the communications network between different computers.
On a particular computer or node of the network, a network interface card (NIC) or network card monitors the physical communications channel for packets destined for that computer, and transmits packets of network data destined for other computers. Software components run on the node computer under direction or control of the operating system or the structures for managing and controlling the network card operations. Furthermore, other software components exist to further abstract the network communications channel and provide more and more general networking interfaces for higher layers using their services. The layered approach allows compartmentalization and easier development of network applications. One model used to provide a structure for layered software component development is the seven-layer ISO model that is well known in the art. While actual implementations of the ISO model do not necessarily rigidly isolate each particular layer as a separate component exposing its own interface to layers above and below, the concepts of the model are generally applicable. The lower layers of the ISO model are the data link layer implemented by a network card device driver, and the transport and network layers implemented as a transport protocol driver layer.
Lower level networking functions, such as controlling a network card and the initial processing of packetized network data, are handled by special system software components called drivers. Drivers integrate with a host operating system according to a specific architecture and have special privileges for accessing system resources. Reference will be made to the Windows NT® or Windows 98® operating system available from the Mircrosoft Corporation.
Because there are different types of transport protocols developed over time by different entities for different reasons, there may be different types of transport protocol drivers acting as software components running on a single host computer system in order to provide the necessary networking capabilities for a given installation. Some common transport protocols include TCP/IP, IPX, AppleTalk®, and others. Each transport protocol driver will communicate with one or more individual network card device drivers in order to send network data over a communications network and to receive incoming packets from the communications network.
Furthermore, because there are a multitude of network cards provided by numerous manufacturers, there is a corresponding large number of potential network card device drivers for different chip structures, such as DC21140, DC21142, DC21143, etc., all of different network cards. In order to support full connectivity to the transport protocol drivers, each network card device driver must support the ability to communicate with each different type of transport protocol driver.
In addition, there are many instances where information between a transport protocol driver and a network card device driver may have to be communicated in order to properly process the network data either prior to transmitting the data over the network or after receiving the data from the network. A general method for transmitting or receiving the data will prepare two queue channels for this issue. Then the driver will place the packet into the proper queue channel. For example, a higher priority packet will be sent out in the higher priority queue channel. Likewise, a lower priority packet will be sent out in the lower priority queue channel. Therefore at least two hardware First-in-First-out (FIFO) queue channels must be provided for communicating network data.
What is needed and what would be an advancement in the art would be a process that allows user defined data related to the processing of packetized network data to be efficiently, communicated with an advanced computability through the transmission component.